/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.capex.javaee.applets;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Calculator extends Applet implements ActionListener {

    String mensaje = " ";
    double valorUno, valorDos, resultado;
    TextField campoDeTexto;
    Button b[] = new Button[10];
    Button suma, resta, multiplicacion, division, limpiar, divisionModular, igual;
    char OP;

    @Override
    public void init() {
        Color k = new Color(120, 89, 90);
        setBackground(k);
        campoDeTexto = new TextField(40);
        Panel panelSuperior = new Panel(new FlowLayout(FlowLayout.CENTER));
        Panel panelInferior = new Panel(new GridLayout(1, 2));
        Panel panelNumeros = new Panel(new GridLayout(4, 3));
        Panel panelOperandos = new Panel(new GridLayout(3, 2));
        
        GridLayout gl = new GridLayout(2, 1);
        setLayout(gl);
        
        for (int i = 9; i >= 0; i--) {
            b[i] = new Button("" + i);
        }
        suma = new Button("+");
        resta = new Button("-");
        multiplicacion = new Button("*");
        division = new Button("/");
        divisionModular = new Button("%");
        limpiar = new Button("clear");
        igual = new Button("=");
        
        campoDeTexto.addActionListener(this);
        
        panelSuperior.add(campoDeTexto);
        for (int i = 9; i >= 0; i--){
            panelNumeros.add(b[i]);
        }
        
        for (int i = 9; i >= 0; i--) {
            b[i].addActionListener(this);
        }
        
        panelOperandos.add(limpiar);
        panelOperandos.add(igual);
        panelOperandos.add(divisionModular);
        panelOperandos.add(suma);
        panelOperandos.add(resta);
        panelOperandos.add(multiplicacion);
        panelOperandos.add(division);
        
        panelInferior.add(panelNumeros);
        panelInferior.add(panelOperandos);
        
        add(panelSuperior);
        add(panelInferior);
        
        suma.addActionListener(this);
        resta.addActionListener(this);
        multiplicacion.addActionListener(this);
        division.addActionListener(this);
        divisionModular.addActionListener(this);
        limpiar.addActionListener(this);
        igual.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        String str = ae.getActionCommand();
        char ch = str.charAt(0);
        if (Character.isDigit(ch)) {
            campoDeTexto.setText(campoDeTexto.getText() + str);
        } else if (str.equals("+")) {
            valorUno = Double.parseDouble(campoDeTexto.getText());
            OP = '+';
            campoDeTexto.setText("");
        } else if (str.equals("-")) {
            valorUno = Double.parseDouble(campoDeTexto.getText());
            OP = '-';
            campoDeTexto.setText("");
        } else if (str.equals("*")) {
            valorUno = Double.parseDouble(campoDeTexto.getText());
            OP = '*';
            campoDeTexto.setText("");
        } else if (str.equals("/")) {
            valorUno = Double.parseDouble(campoDeTexto.getText());
            OP = '/';
            campoDeTexto.setText("");
        } else if (str.equals("%")) {
            valorUno = Double.parseDouble(campoDeTexto.getText());
            OP = '%';
            campoDeTexto.setText("");
        }
        if (str.equals("=")) {
            valorDos = Double.parseDouble(campoDeTexto.getText());
            if (OP == '+') {
                resultado = valorUno + valorDos;
            } else if (OP == '-') {
                resultado = valorUno - valorDos;
            } else if (OP == '*') {
                resultado = valorUno * valorDos;
            } else if (OP == '/') {
                resultado = valorUno / valorDos;
            } else if (OP == '%') {
                resultado = valorUno % valorDos;
            }
            campoDeTexto.setText("" + resultado);
        }
        if (str.equals("clear")) {
            campoDeTexto.setText("");
        }
    }
}
